Everything about Concurrency Computer Science totally explained
In
computer science,
concurrency is a property of systems in which several
computational processes are executing at the same time, and potentially interacting with each other. The study of concurrency encompasses a broad range of systems, from tightly-coupled, largely synchronous
parallel computing systems, to loosely-coupled, largely asynchronous
distributed systems. The concurrent processes may be executing truly simultaneously, in the case that they run on separate processors, or their execution steps may be interleaved to produce the appearance of concurrency, as in the case of separate processes running on a
multitasking system. Because the processes in a concurrent system can interact with each other while they're executing, the number of possible execution paths in the system can be extremely large, and the resulting behavior can be very complex. The difficulties associated with concurrency have been tackled both through the construction of languages and concepts to make the complexity of concurrent execution manageable, and through the development of theories for reasoning about interacting concurrent processes. In the years since, a wide variety of formalisms have been developed for modeling and reasoning about concurrency.
Models
A number of formalisms for modeling and understanding concurrent systems have been developed, including:
Some of these models of concurrency are primarily intended to support reasoning and specification, while others can be used through the entire development cycle, including design, implementation, proof, testing and simulation of concurrent systems.
The proliferation of different models of concurrency has motivated some researchers to develop ways to unify these different theoretical models. For example, Lee and Sangiovanni-Vincentelli have demonstrated that a so-called "tagged-signal" model can be used to provide a common framework for defining the
denotational semantics of a variety of different models of concurrency, while Nielsen, Sassone, and Winskel have demonstrated that
category theory can be used to provide a similar unified understanding of different models.
Logics
Various types of
temporal logic can be used to help reason about concurrent systems. Some of these logics, such as
linear temporal logic and
computational tree logic, allow assertions to be made about the sequences of states that a concurrent system can pass through. Others, such as
action computational tree logic,
Hennessy-Milner logic, and
Lamport's temporal logic of actions, build their assertions from sequences of
actions (changes in state). The principal application of these logics is in writing specifications for concurrent systems.
Practice
Concurrent programming encompasses the programming languages and algorithms used to implement concurrent systems. Concurrent programming is usually considered to be more general than
parallel programming because it can involve arbitrary and dynamic patterns of communication and interaction, whereas parallel systems generally have a predefined and well-structured communications pattern. The base goals of concurrent programming include
correctness,
performance and
robustness. Concurrent systems such as operating systems are generally designed to operate indefinitely and not terminate unexpectedly. Some concurrent systems implement a form of
transparent concurrency, in which concurrent computational entities may compete for and share a single resource, but the complexities of this competition and sharing are shielded from the programmer.
Because they use shared resources, concurrent systems in general require the inclusion of some kind of
arbiter somewhere in their implementation (often in the underlying hardware), to control access to those resources. The use of arbiters introduces the possibility of
indeterminacy in concurrent computation which has major implications for practice including correctness and performance. For example arbitration introduces
unbounded nondeterminism which raises issues with
model checking because it causes explosion in the state space and can even cause models to have an infinite number of states.
Further Information
Get more info on 'Concurrency Computer Science'.
|
External Link Exchanges
Do you know how hard it is to get a link from a large encyclopaedia? Well we're different and will prove it. To get a link from us just add the following HTML to your site on a relevant page:
<a href="http://concurrency__computer_science.totallyexplained.com">Concurrency (computer science) Totally Explained</a>
Then simply click through this link from your web page. Our crawlers will verify your link, extract the title of your web page and instantly add a link back to it. If you like you can remove the words Totally Explained and embed the link in article text.
As long as your link remains in place, we'll keep our link to you right here. Please play fair - our crawlers are watching. Your site must be closely related to this one's topic. Any kind of spamming, dubious practises or removing the link will result in your link from us being dropped and, potentially, your whole site being banned. |